package com.ruoyi.system.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.UserWorksMapper;
import com.ruoyi.system.domain.UserWorks;
import com.ruoyi.system.service.IUserWorksService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 作品Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-29
 */
@Service
public class UserWorksServiceImpl implements IUserWorksService
{
    @Autowired
    private UserWorksMapper userWorksMapper;

    /**
     * 查询作品
     *
     * @param worksId 作品主键
     * @return 作品
     */
    @Override
    public UserWorks selectUserWorksByWorksId(Long worksId)
    {
        return userWorksMapper.selectUserWorksByWorksId(worksId);
    }

    /**
     * 查询作品列表
     *
     * @param userWorks 作品
     * @return 作品
     */
    @Override
    public List<UserWorks> selectUserWorksList(UserWorks userWorks, Long userId)
    {
        return userWorksMapper.selectUserWorksList(userWorks, userId);
    }

    /**
     * 新增作品
     *
     * @param userWorks 作品
     * @return 结果
     */
    @Override
    @Transactional
    public int insertUserWorks(UserWorks userWorks, Long userId)
    {
        userWorksMapper.insertUserWorks(userWorks);
        userWorksMapper.subUserGenImgCount(userId);
        return userWorksMapper.insertUserGenWork(userWorks.getWorksId(), userId);
    }


    /**
     * 修改作品
     *
     * @param userWorks 作品
     * @return 结果
     */
    @Override
    public int updateUserWorks(UserWorks userWorks)
    {
        return userWorksMapper.updateUserWorks(userWorks);
    }

    /**
     * 批量删除作品
     *
     * @param worksIds 需要删除的作品主键
     * @return 结果
     */
    @Override
    public int deleteUserWorksByWorksIds(Long[] worksIds)
    {
        return userWorksMapper.deleteUserWorksByWorksIds(worksIds);
    }

    /**
     * 删除作品信息
     *
     * @param worksId 作品主键
     * @return 结果
     */
    @Override
    public int deleteUserWorksByWorksId(Long worksId)
    {
        return userWorksMapper.deleteUserWorksByWorksId(worksId);
    }


    /**
     * 获取生图次数
     *
     * @param userId 用户的ID
     * @return 结果
     */
    public Integer getUserGenImgCount(Long userId){
        return userWorksMapper.getUserGenImgCount(userId);
    }
}
